home *** CD-ROM | disk | FTP | other *** search
/ The AGA Experience 3 / AGA Experience Volume 3 (1997)(NFA - SAdENESS)[!].iso / software / utilities / graphics / rtgmaster / demos / dblbuf.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-11  |  3.0 KB  |  144 lines

  1. /*
  2.     DblBuf
  3.  
  4.     A demo of rtg.library
  5.  
  6.     Written by Hans-Jörg & Thomas Frieden
  7.            Schlossstr. 176
  8.            54293 Trier
  9.            tfrieden@fax.uni-trier.de
  10.            hfrieden@fix.uni-trier.de
  11.  
  12. */
  13.  
  14.  
  15. #include <stdio.h>
  16. #include <stdlib.h>
  17. #include <exec/types.h>
  18. #include <exec/memory.h>
  19. #include <dos/dos.h>
  20. #include <rtgmaster/rtgmaster.h>
  21. #include <rtgmaster/rtgsublibs.h>
  22. #include <utility/tagitem.h>
  23. #include <clib/exec_protos.h>
  24. #include <clib/rtgmaster_protos.h>
  25. #include <clib/dos_protos.h>
  26. #include <pragmas/exec_pragmas.h>
  27. #include <pragmas/rtgmaster_pragmas.h>
  28. #include <pragmas/dos_pragmas.h>
  29.  
  30. struct RtgScreen *RtgScreen;
  31. struct ScreenReq *sr;
  32. struct RTGMasterBase *RTGMasterBase;
  33. extern struct DOSBase *DOSBase;
  34.  
  35. ULONG cmap[800];
  36.  
  37. struct TagItem rtag[] = {
  38.     //smr_MinWidth,       320,
  39.     //smr_MinHeight,      240,
  40.     //smr_MaxWidth,       640,
  41.     //smr_MaxHeight,      480,
  42.     smr_ChunkySupport,  -1,
  43.     smr_PlanarSupport,  -1,
  44.     //smr_Buffers,        1,
  45.     TAG_DONE,           NULL
  46. };
  47.  
  48. struct TagItem gtag[] = {
  49.     grd_BytesPerRow,    0,
  50.     grd_Width,          0,
  51.     grd_Height,         0,
  52.     grd_Depth,          0,
  53.     grd_PixelLayout,    0,
  54.     grd_ColorSpace,     0,
  55.     grd_PlaneSize,      0,
  56.     TAG_DONE,           0
  57. };
  58.  
  59. struct TagItem tacks[] = {
  60.     rtg_Buffers,        2,
  61.     TAG_DONE,           0
  62. };
  63.  
  64. void main(int argc, char **argv) {
  65.    /*
  66.     * Since this is a demo, I don't check anything at all
  67.     * and simply assume that every open went ok... 8-)
  68.     */
  69.     int i, x, y;
  70.     UBYTE *adr;
  71.     ULONG size;
  72.  
  73.     RTGMasterBase = (struct RTGMasterBase *)OpenLibrary((STRPTR)"rtgmaster.library", 0);
  74.  
  75.     sr = RtgScreenModeReq(rtag);
  76.  
  77.     if (sr==NULL) {
  78.     CloseLibrary((struct Library *)RTGMasterBase);
  79.     exit(0L);
  80.     }
  81.  
  82.     RtgScreen = OpenRtgScreen(sr, tacks);
  83.  
  84.     GetRtgScreenData(RtgScreen, gtag);
  85.  
  86.     size = gtag[0].ti_Data;
  87.  
  88.     printf("Screen is %ld x %ld x %ld\n", gtag[1].ti_Data, gtag[2].ti_Data, gtag[3].ti_Data);
  89.     printf("It has %ld bytes per row", size);
  90.     if (size>gtag[1].ti_Data) {
  91.     printf(", which means that the screen is wider than what you see\n");
  92.     } else printf("\n");
  93.  
  94.     cmap[0] = 0x01000000;
  95.     x = 1;
  96.     for (i = 0; i < 256; i++) {
  97.     cmap[x++] = i * 0x1111111;
  98.     cmap[x++] = i * 0x1111111;
  99.     cmap[x++] = i * 0x1111111;
  100.     }
  101.     cmap[x++]=0;
  102.  
  103.  
  104.     if (RtgScreen) {
  105.     LockRtgScreen(RtgScreen);
  106.  
  107.     adr=(UBYTE *)GetBufAdr(RtgScreen, 0);
  108.  
  109.     for (y=0; y<30; y++) {
  110.         for (x=0; x<size/2; x++) {
  111.         *(adr+x)=45;
  112.         }
  113.         adr+=size;
  114.     }
  115.  
  116.     adr=(UBYTE *)GetBufAdr(RtgScreen, 1)/*+10*size*/;
  117.  
  118.     for (y=0; y<30; y++) {
  119.         for (x=0; x<size/2; x++) {
  120.         *(adr+x)=255;
  121.         }
  122.         adr+=size;
  123.     }
  124.  
  125.  
  126.     LoadRGBRtg(RtgScreen, (APTR) cmap);
  127.     x=1;
  128.     for (i=30; i>0; i--) {
  129.         Delay(i);
  130.         if (x==0) x=1; else x=0;
  131.         SwitchScreens(RtgScreen, (ULONG)x);
  132.     }
  133.     for (i=30; i>0; i--) {
  134.         Delay(1);
  135.         if (x==0) x=1; else x=0;
  136.         SwitchScreens(RtgScreen, (ULONG)x);
  137.     }
  138.  
  139.     UnlockRtgScreen(RtgScreen);
  140.     CloseRtgScreen(RtgScreen);
  141.     }
  142.     CloseLibrary((struct Library *)RTGMasterBase);
  143. }
  144.